A plugin (also referred to as an addon, addin, snapin or extension) is typically a computer program that interacts with a core application, such as a web browser, to provide certain functions on demand. In today's networked computing environment, plugins are often used to expand the functions of core applications.
Presently, plugins typically execute in the following plugin execution modes:
1) The plugin and the core application run in the same process. In this mode the support system of the plugin is simple and the interaction efficiency between the plugin and the core application is high. However, because the plugin and the core application run in the same process, once a problem occurs in the plugin, it will directly cause the core application to behave abnormally or crash. Also, because there can be various modules in the core application, it is difficult to specifically locate the module or plugin in which the problem occurs.
2) The plugin runs outside the process in which the core application runs and each plugin occupies a separate process, thus preventing the core application from being influenced by the plugin. When the number of plugins is large, a large amount of system resources of the client will be consumed, which can lead to slower response and degraded user experience.
3) The plugin runs outside the process in which the core application runs and all plugins run in a specific process. In this mode, the system resources of the client may be saved, but when a certain plugin behaves abnormally, it may cause all of the plugins to be unavailable or abnormal. Further, it is difficult to specifically locate the plugin in which the problem occurs.
Given the number of developers for plugins and less strict quality control, the plugins often have more bugs than the core application. Thus, when the above Mode 1 or Mode 3 is employed, the operation of the core application or all the plugins may be abnormal due to the unstable execution of an individual plugin. At the same time, the resources of a client are often limited; therefore, if the above Mode 2 is employed, too much of the client's resources will be consumed and performance will tend to degrade.